The 16-Bit language tools consist of an assembler (pic30-as.exe) and a linker (pic30-ld.exe). These tools are sometimes referred to as the "ASM30 Suite". The user's guide describes additional utilities that are not supported by the MPLAB IDE and therefore are not supplied in this release.
With the exceptions noted below, the 16-Bit tools are written and distributed under the GNU General Public License (GPL) which means that its source code is freely distributed and available to the public.
The source for the tools under the GNU GPL may be downloaded separately from the Microchip WWW web page. You may read the GNU GPL in the file named COPYING located the top level of your install directory. A general discussion of principles underlying the GPL may be found at www.gnu.org/copyleft.
Exceptions to the GNU GPL:
Support code provided for the header files, linker scripts, and runtime libraries are also exceptions to, and therefore not covered under, the GPL.
The following dsPIC30 devices are supported:
30F1010 30F2010 30F3010 30F4011 30F5011 30F6010
30F2011 30F3011 30F4012 30F5013 30F6010A
30F2012 30F3012 30F4013 30F5015 30F6011
30F2020 30F3013 30F5016 30F6011A
30F2023 30F3014 30F6012
30F6012A
30F6013
30F6013A
30F6014
30F6014A
30F6015
The following PIC24 devices are supported:
24FJ16GA002 24FJ32GA002
24FJ16GA004 24FJ32GA004
24FJ48GA002 24FJ64GA002 24FJ96GA006 24FJ128GA006
24FJ48GA004 24FJ64GA004 24FJ96GA008 24FJ128GA008
24FJ64GA006 24FJ96GA010 24FJ128GA010
24FJ64GA008
24FJ64GA010
24HJ12GP201 24HJ16GP304
24HJ12GP202
24HJ32GP202 24HJ64GP206 24HJ128GP206 24HJ256GP206
24HJ32GP204 24HJ64GP210 24HJ128GP210 24HJ256GP210
24HJ64GP506 24HJ128GP306 24HJ256GP610
24HJ64GP510 24HJ128GP310
24HJ128GP506
24HJ128GP510
The following dsPIC33 devices are supported:
33FJ12GP201 33FJ16GP304
33FJ12GP202
33FJ32GP202 33FJ64GP206 33FJ128GP206 33FJ256GP506
33FJ32GP204 33FJ64GP306 33FJ128GP306 33FJ256GP510
33FJ64GP310 33FJ128GP310 33FJ256GP710
33FJ64GP706 33FJ128GP706
33FJ64GP708 33FJ128GP708
33FJ64GP710 33FJ128GP710
33FJ12MC201 33FJ16MC304
33FJ12MC202
33FJ32MC202 33FJ64MC506 33FJ128MC506 33FJ256MC510
33FJ32MC204 33FJ64MC508 33FJ128MC510 33FJ256MC710
33FJ64MC510 33FJ128MC706
33FJ64MC706 33FJ128MC708
33FJ64MC710 33FJ128MC710
The following 'virtual' devices are supported:
The dsPIC language tools are installed with the MPLAB IDE installer.
The following documents pertain to the MPLAB ASM30 and MPLAB LINK30, these may be installed as part of the full product or downloaded from Microchip's Web-site:
We refer to these documents throughout this README in somewhat familiar terms.
Updates to these manuals, that have not made it into (virtual) print, can be found later in this README.
This support update to version 3.00 includes 13 new devices 24FJ16GA002, 24FJ16GA004, 24FJ48GA002, 24FJ48GA004, 24HJ16GP304, 24HJ32GP202, 24HJ32GP204, 33FJ16GP304, 33FJ32GP202, 33FJ32GP204, 33JF16MC304, 33FJ32MC202 and 33FJ32MC204.
A customer can determine if this update has been installed by examining the C30 version string. A version string is displayed by executing the following command:
pic30-as --version
| The version string before update is: | (dsPIC30, Microchip v3.00) (A) |
| The version string after update is: | (dsPIC30, Microchip v3.00) (B) |
This release provides a number of enhancements to make accessing the unique features of the dsPIC easier. These are summarized below, with more information available in the accompanying documentation.
Some highlights:
Most existing projects can be migrated to MPLAB C30 v3.00 without modification. Minor source code updates may be required to address the following issues.
When using an intermediate directory (selected from the Directories Tab of the Build Options For Project dialogue box) the linker may fail to link correctly if the project contains user generated assembly files. This will be corrected in a later version of MPLAB IDE, for now you may disable the intermediate directory to achieve a successful link
This has been fixed in MPLAB IDE v7.60.
/*
** User Code and Library Code
**
** This section must not be assigned to __CODE_BASE,
** because CodeGuard(tm) sections may be located there.
*/
.text :
{
*(.handle);
*(.libc) *(.libm) *(.libdsp); /* keep together in this order */
*(.lib*);
*(.text);
} >program
stores a sequence of ascii characters (with no automatic trailing zero byte) into program memory, including the upper byte.
stores a sequence of ascii characters (with an automatic trailing zero byte) into program memory, including the upper byte.
is the same as .pasciz "string2".
The following example is not encoded correctly:
.equiv var1,root+1
.equiv var2,var1
.word var1 ; encodes root+1
.word var2 ; encodes root
This can happen when the value specified in .equiv is the name of an SFR high byte such as _LATBH, which is defined in the processor include files as an .equiv. The workaround in this case would be to refer to the base register itself, i.e. _LATB+1
add w0, #52, w0
{standard input}: Assembler messages:
{standard input}:1: Error: Invalid operands specified ('add w0,#52,w0').
{standard input}:1: Check operand #2. Operand must be between -8 and 7, inclusive.
MPLAB ASM30 Listing: page 1
1 add w0,#52,w0
This instruction takes a 5-bit unsigned literal (according to the docs) so it should be between 0 and 31 inclusive.
If a linker script is modified to place the .text section from one object file before all the others, multiple definition errors can result. When this occurs the linker acts as if the section was included twice. The workaround is to specify a full pathname, or *, before the object file name:
/*
** User Code and Library Code
*/
.text __CODE_BASE :
{
*(.handle);
*(.libc) *(.libm) *(.libdsp); /* keep together in
this order */
*(.lib*);
myfile.o(.text); /* this form causes error */
*myfile.o(.text); /* this form works OK */
*(.text);
} >program
Some addresses will be invalid for the address attribute, notably those that are used for the .handle, .libc, .libm, .libdsp and other .lib sections.
Addresses that conflict the .text section can be accommodated by modifying the linker script. To modify the linker script, simply remove the .text section from the list of input sections for the output section named .text. For example, it may be modified to read:
/*
** User Code and Library Code
*/
.text __CODE_BASE :
{
*(.handle);
*(.libc) *(.libm) *(.libdsp); /* keep together in
this order */
*(.lib*);
/* *(.text); */
} >program
This will cause the linker to place the .text input
sections after satisfying all of the absolute section
requirements.As a workaround, use OSCCON for OSCCONL and OSCCON+1 for OSCONH.
On certain devices, applications with large amounts of auto_psv data may fail to link with this message, even though the total amount of memory used does not exceed the flash capacity. This is because sections .text and .const have each been allocated in large blocks and the PSV page alignment requirement can't be satisfied.
As a workaround, comment out one line of the linker script as noted above for BIN30-30. This will allow section .text to be allocated in smaller portions, flowing around .const if necessary.
If an ELF C program is built with -mlarge-code, or an ELF assembly program uses call or goto instructions, then function pointer references to boot or secure access entry slots may fail with the following error:
Cannot use WORD - ACCESS on a symbol (__boot_entry:n) that
is not located in a code, psv, or eedata section.
The problem is confusing because it is source code dependant. If the access entry slot reference appears before any call or goto instructions, the program will link correctly. For example:
.text
.global __reset
__reset:
mov #boot(1),w1
call foo
mov #boot(2),w2
; ...
In this example, only the second function pointer reference will result in an error. If the program is written in C, then the order of instructions may vary with optimization level.
Possible work-arounds are:
This installation makes no changes to the way environment variables have been updated previously.
Modified environment variables are identified as part of the installation procedure and are documented in the manuals.
Microchip provides online support via our web site at www.microchip.com. This web site is used as a means to make files and information easily available to customers. Accessible by using your favorite Internet browser, the web site contains the following information:
Microchip's customer notification service helps keep customers current on Microchip products. Subscribers will receive e-mail notification whenever there are changes, updates, revisions or errata related to a specified product family or development tool of interest.
To register, access the Microchip web site at www.microchip.com, click on Customer Change Notification and follow the registration instructions.
The Development Systems product group categories are:
Users of Microchip products can receive assistance through several channels:
Customers should contact their distributor, representative or field application engineer (FAE) for support. Local sales offices are also available to help customers. A listing of sales offices and locations is available on our website.
Technical support is available through the web site at: http://support.microchip.com